#include <iostream>
#include <math.h>
#include <vector>
#include <algorithm>
using namespace std;

#define pai 3.1415926535

int N;
double s1, e1, s2, e2;
double dis[4000][4000];
double max_x, max_y, min_x, min_y;
double ans = 0;

int been[4000] = {0};
double target_r[4000] = {0};

struct Node
{
    double x, y;
    double sum_area = 0;
    int id;
}Points[10];

void dfs(Node now)
{
    been[now.id] = 1;

    double origin[10];

    if(target_r[now.id] > 0)
    {   
        now.sum_area +=  pai*pow(target_r[now.id], 2);
        if(ans < now.sum_area)  ans = now.sum_area;
        for(int i = 0; i < N; i++)
        {
            if(been[i] == 0)
            {
                double temp;
                temp = sqrt(dis[i][now.id]) - target_r[now.id];
                origin[i] = target_r[i];
                target_r[i] = min(temp, target_r[i]);
            }
        }

        for(int i = 0; i < N; i++)
    {
        if(been[i] == 0)
        {
            double temp = Points[i].sum_area;
            Points[i].sum_area = now.sum_area;
            dfs(Points[i]);
            Points[i].sum_area = temp;
        }
    }

    for(int i = 0; i < N; i++)
        {
            if(been[i] == 0)
            {
                target_r[i] = origin[i];
            }
        }
    }

    

    been[now.id] = 0;
    
}

int main()
{
    cin >> N;
    cin >> s1 >> e1 >> s2 >> e2;
    
    s1 += 2000;
    s2 += 2000;
    e1 += 2000;
    e2 += 2000;

    min_x = min(s1, s2);
    min_y = min(e1, e2);
    max_x = max(s1, s2);
    max_y = max(e1, e2);

    for(int i = 0; i < N; i++)
    {
        cin >> Points[i].x >> Points[i].y;
        Points[i].x += 2000;
        Points[i].y += 2000;
        Points[i].id = i;
    }

    for(int i = 0 ; i < N; i++)
    {
        for(int j = i+1; j < N; j++)
        {
            dis[i][j] = pow(Points[i].x - Points[j].x, 2) 
                    + pow(Points[i].y - Points[j].y, 2);
            dis[j][i] = dis[i][j];
        }
    }

    for(int i = 0 ; i < N; i++)
    {
        target_r[i] = min(min(Points[i].x - min_x, max_x - Points[i].x),
                     min(Points[i].y - min_y, max_y - Points[i].y));
    }

    for(int i = 0; i < N; i++)
    {
        dfs(Points[i]);
        Points[i].sum_area = 0;
    }

    double area = (max_x - min_x) * (max_y - min_y);

    double res = area - ans;

    if(res - 0.5 >= int(res))
        cout << int(res) + 1;
    else  cout << int(res);

    
}